home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 7 / Amiga Format AFCD07 (Dec 1996, Issue 91).iso / serious / shareware / programming / emacs-complete / fsf / emacs / src / m / ibmrt-aix.h < prev    next >
C/C++ Source or Header  |  1993-06-12  |  6KB  |  184 lines

  1. /* RTPC AIX machine/system dependent defines
  2.    Copyright (C) 1988 Free Software Foundation, Inc.
  3.  
  4. This file is part of GNU Emacs.
  5.  
  6. GNU Emacs is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2, or (at your option)
  9. any later version.
  10.  
  11. GNU Emacs is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU Emacs; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20.  
  21. /* The following line tells the configuration script what sort of 
  22.    operating system this machine is likely to run.
  23.    USUAL-OPSYS="usg5-2-2"  */
  24.  
  25. /* The following three symbols give information on
  26.  the size of various data types.  */
  27.  
  28. #define SHORTBITS 16        /* Number of bits in a short */
  29.  
  30. #define INTBITS 32        /* Number of bits in an int */
  31.  
  32. #define LONGBITS 32        /* Number of bits in a long */
  33.  
  34. /* Define BIG_ENDIAN iff lowest-numbered byte in a word
  35.    is the most significant byte.  */
  36.  
  37. #define BIG_ENDIAN
  38.  
  39. /* Define NO_ARG_ARRAY if you cannot take the address of the first of a
  40.  * group of arguments and treat it as an array of the arguments.  */
  41.  
  42. #define NO_ARG_ARRAY
  43.  
  44. /* Now define a symbol for the cpu type, if your compiler
  45.    does not define it automatically.  */
  46.  
  47. #ifndef IBMAIX
  48. #define IBMAIX
  49. #endif
  50.  
  51. /* Use type int rather than a union, to represent Lisp_Object */
  52. /* This is desirable for most machines.  */
  53.  
  54. #define NO_UNION_TYPE
  55.  
  56. /* No load average information appears in the AIX kernel.  VRM has this
  57.    info, and if anyone desires they should fix fns.c to get it out of VRM */
  58.  
  59. /* Define CANNOT_DUMP on machines where unexec does not work.
  60.    Then the function dump-emacs will not be defined
  61.    and temacs will do (load "loadup") automatically unless told otherwise.  */
  62.  
  63. /* #define CANNOT_DUMP */
  64.  
  65. /* Define addresses, macros, change some setup for dump */
  66.  
  67. #undef COFF
  68. #define NO_REMAP
  69. #undef static
  70.   /* Since NO_REMAP, problem with statics doesn't exist */
  71.  
  72. #define TEXT_START 0x10000000
  73. #define TEXT_END 0
  74. #define DATA_START 0x20000000
  75. #define DATA_END 0
  76.  
  77. /* The data segment in this machine always starts at address 0x20000000.
  78.    An address of data cannot be stored correctly in a Lisp object;
  79.    we always lose the high bits.  We must tell XPNTR to add them back.  */
  80.  
  81. #define DATA_SEG_BITS 0x20000000
  82.  
  83. #define N_BADMAG(x) BADMAG(x)
  84. #define N_TXTOFF(x) A_TEXTPOS(x)
  85. #define N_SYMOFF(x) A_SYMPOS(x)
  86. #define A_TEXT_OFFSET(HDR) sizeof(HDR)
  87. #define ADJUST_EXEC_HEADER \
  88.     unexec_text_start += sizeof(hdr); \
  89.     unexec_data_start = ohdr.a_dbase
  90. #undef ADDR_CORRECT
  91. #define ADDR_CORRECT(x) ((int)(x))
  92.  
  93. /* This is the offset of the executable's text, from the start of the file.  */
  94.  
  95. #define A_TEXT_SEEK(HDR) (N_TXTOFF (hdr) + sizeof (hdr))
  96.  
  97. /* Define C_ALLOCA if this machine does not support a true alloca
  98.    and the one written in C should be used instead.
  99.    Define HAVE_ALLOCA to say that the system provides a properly
  100.    working alloca function and it should be used.
  101.    Define neither one if an assembler-language alloca
  102.    in the file alloca.s should be used.  */
  103.  
  104. #define C_ALLOCA
  105. #define STACK_DIRECTION -1 /* tell alloca.c which way it grows */
  106.  
  107. /* AIX has PTYs, so define here, along with macros needed to make them work. */
  108.  
  109. #define HAVE_PTYS
  110. #define PTY_ITERATION for (i=0; i<256; i++)
  111. #define PTY_NAME_SPRINTF sprintf (ptyname, "/dev/ptc%d", i);
  112.  
  113. #define PTY_TTY_NAME_SPRINTF                \
  114. { /* Check that server side not already open */        \
  115.   if ((ioctl (*ptyv, PTYSTATUS, 0) & 0xFFFF) != 0)    \
  116.     {                            \
  117.       close (*ptyv);                    \
  118.       continue;                        \
  119.     }                            \
  120.   /* And finally to be sure we can open it later */    \
  121.   sprintf (ptyname, "/dev/pts%d", i);            \
  122.   signal (SIGHUP,SIG_IGN);                \
  123. }     /* ignore hangup at process end */
  124.  
  125. /* TIOCNOTTY doesn't occur on AIX, but the rest
  126.    of the conditionalized code in process.c does
  127.    the right thing if we fake this out.  */
  128. #define TIOCNOTTY IOCTYPE
  129.  
  130. /* AIX has IPC. It also has sockets, and either can be used for client/server.
  131.    I would suggest the client/server code be changed to use HAVE_SOCKETS rather
  132.    than BSD as the conditional if sockets provide any advantages. */
  133.  
  134. #define HAVE_SYSVIPC
  135.  
  136. /* AIX has sockets */
  137.  
  138. #define HAVE_SOCKETS
  139. /* #define SKTPAIR */ /* SKTPAIR works, but what is advantage over pipes? */
  140.  
  141. /* Specify the font for X to use.  */
  142.  
  143. #define X_DEFAULT_FONT "Rom14.500"
  144.  
  145. /* Here override various assumptions in ymakefile */
  146.  
  147. /* On AIX 2.2.1, use these definitions instead
  148. #define C_SWITCH_MACHINE -I/usr/include -Nn2000
  149. #define LIBS_MACHINE -lX -lrts
  150. */
  151.  
  152. #define C_SWITCH_MACHINE -I/usr/include -I/usr/include/bsd -Nn2000
  153. #define LIBS_MACHINE -lXMenu -lX -lsock -lbsd -lrts
  154.  
  155. #define OBJECTS_MACHINE hftctl.o
  156. #define START_FILES /lib/crt0.o
  157. /* -lXMenu, -lX must precede -lsock, -lbsd */
  158. #define LD_SWITCH_MACHINE -n -T0x10000000 -K -e start
  159.  
  160. #if 0 /* I refuse to promulgate a recommendation that would make
  161.          users unable to debug - RMS.  */
  162. /* delete the following line to foil optimization, enable debugging */
  163. #define C_DEBUG_SWITCH -O
  164. #endif
  165.  
  166.  
  167. /* Setup to do some things BSD way - these won't work previous to AIX 2.1.2 */
  168.  
  169. #include </usr/include/bsd/BSDtoAIX.h>
  170. #define BSTRING
  171. #define HAVE_GETTIMEOFDAY
  172. #define HAVE_SELECT
  173. #define HAVE_TIMEVAL
  174. #define HAVE_VFORK
  175.  
  176. /* But don't use utimes() -- it causes SIGSEGV!  Use utime() instead. */
  177. #define USE_UTIME
  178.  
  179. /* AIX defines FIONREAD, but it does not work.  */
  180. #define BROKEN_FIONREAD
  181.  
  182. /* rocky@watson.ibm.com says this is needed.  */
  183. #define HAVE_FTIME
  184.